﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;


namespace TaskManager.Models.Interfaces.Repository
{
    //Интерфейс для репозитория, нужен для сохранения принципов ООП.
    //Указывает какие функции должен содержать репозиторий.
    public interface IRepository<TEntity> where TEntity : class
    {
    
        IQueryable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
                                 Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
                                 string includeProperties = "");

        TEntity GetById(object id);

        void Insert(TEntity entity);

        void Update(TEntity entity);

        void Delete(TEntity entity);

    }
}
